﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WC.DL.DALC.IF;
using WC.BL.BE;
using SAP.Middleware.Connector;

namespace WC.DL.DALC.SAP
{
    public class TiendaDALC : ITiendaDALC
    {
        #region ITiendaDALC Members

        public GenericBE read(string pCodigo)
        {
            IRfcFunction function = null;
            GenericBE obj = null;
            try
            {
                RfcDestination dest = DALC.getDestination();
                function = dest.Repository.CreateFunction("ZWC_SD_006");
                if (!string.IsNullOrEmpty(pCodigo))
                {
                    function.SetValue("I_WERKS", pCodigo);
                }
                function.Invoke(dest);
                IRfcTable T_CENTROS = function.GetTable("T_CENTROS");
                if (T_CENTROS != null && T_CENTROS.Count > 0)
                {
                    IRfcStructure S_CENTROS = T_CENTROS[0];
                    if (S_CENTROS != null)
                    {
                        obj = new GenericBE();
                        obj.Codigo = S_CENTROS["WERKS"].GetString();
                        obj.Descripcion = S_CENTROS["NAME2"].GetString();
                    }
                }
            }
            catch
            {
                obj = null;
            }
            return obj;
        }

        public List<GenericBE> list(string pCodigo, string pDescripcion)
        {
            IRfcFunction function = null;
            GenericBE obj = null; List<GenericBE> lst = new List<GenericBE>();
            try
            {
                RfcDestination dest = DALC.getDestination();
                function = dest.Repository.CreateFunction("ZWC_SD_006");
                if (!string.IsNullOrEmpty(pCodigo))
                {
                    function.SetValue("I_WERKS", pCodigo);
                }
                if (!string.IsNullOrEmpty(pDescripcion))
                {
                    function.SetValue("I_NAME2", pDescripcion);
                }
                function.Invoke(dest);
                IRfcTable T_CENTROS = function.GetTable("T_CENTROS");
                if (T_CENTROS != null && T_CENTROS.Count > 0)
                {
                    foreach (IRfcStructure S_CENTROS in T_CENTROS)
                    {
                        obj = new GenericBE();
                        obj.Codigo = S_CENTROS["WERKS"].GetString();
                        obj.Descripcion = S_CENTROS["NAME2"].GetString();

                        lst.Add(obj);
                    }
                }
            }
            catch
            {
                lst = new List<GenericBE>();
            }
            obj = new GenericBE(); obj.Codigo = string.Empty; obj.Descripcion = string.Empty;
            lst.Add(obj);
            return lst;
        }

        #endregion
    }
}
